/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.isd.seguridad.modelo;

import com.isd.venta.modelo.Cliente;
import com.isd.venta.modelo.Vendedor;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *
 * @author lucas
 */
@Entity
@Table(name="USR_USUWEB")
public class Usuario implements Serializable {
    private static final long serialVersionUID = 1L;   

    @Id
    @Basic(optional = false)
    @Column(name = "USR_USUWEB_NOMBRE")
    private String nombre;
    @Column(name = "USR_USUWEB_PASWRD")
    private String password;
    @Column(name = "USR_USUWEB_ACTIVO")
    private Character activo;
    //A - Administrador
    //C - Cliente
    @Column(name = "USR_USUWEB_USUTIP")
    private Character tipo;

    @Column(name = "USR_USUWEB_CAMPAS")
    private Character cambiaPassword;


    @JoinColumn(name = "USR_USUWEB_NROCTA", referencedColumnName = "VTMCLH_NROCTA", nullable = false, insertable=false, updatable=false)
    @OneToOne
    private Cliente cliente;

    @JoinColumn(name = "USR_USUWEB_VNDDOR", referencedColumnName = "VTTVND_VNDDOR", nullable = false, insertable=false, updatable=false)
    @OneToOne
    private Vendedor vendedor;

    @Column(name = "USR_USUWEB_TIPVIS", length=1)
    private String tipoVista;

    @Column(name = "USR_USUWEB_ULTACC")
    @Temporal(TemporalType.DATE)
    private Date ultimoAcceso;

    @Column(name = "USR_USUWEB_DIREML", length=80)
    private String correoElectronico;
    
    @Column(name = "USR_USUWEB_ACTCAT", length=1)
    private String actualizaCatalogo;
        
    @OneToMany(mappedBy = "usuario", fetch=FetchType.LAZY)
    private List<ProductoFavorito> favoritos;

    public Usuario() {

        this.tipo = 'X';
        this.tipoVista = "P";

    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public Character getActivo() {
        return activo;
    }

    public void setActivo(Character activo) {
        this.activo = activo;
    }


    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Character getTipo() {
        return tipo;
    }

    public void setTipo(Character tipo) {
        this.tipo = tipo;
    }

    public Cliente getCliente() {
        return cliente;
    }

    public void setCliente(Cliente cliente) {
        this.cliente = cliente;
    }

    public Character getCambiaPassword() {
        return cambiaPassword;
    }

    public void setCambiaPassword(Character cambiaPassword) {
        this.cambiaPassword = cambiaPassword;
    }

    public Vendedor getVendedor() {
        return vendedor;
    }

    public void setVendedor(Vendedor vendedor) {
        this.vendedor = vendedor;
    }

    public String getTipoVista() {
        return tipoVista;
    }

    public void setTipoVista(String tipoVista) {
        this.tipoVista = tipoVista;
    }

    public Date getUltimoAcceso() {
        return ultimoAcceso;
    }

    public void setUltimoAcceso(Date ultimoAcceso) {
        this.ultimoAcceso = ultimoAcceso;
    }

    public String getCorreoElectronico() {
        return correoElectronico;
    }

    public void setCorreoElectronico(String correoElectronico) {
        this.correoElectronico = correoElectronico;
    }

    public List<ProductoFavorito> getFavoritos() {
        return favoritos;
    }

    public void setFavoritos(List<ProductoFavorito> favoritos) {
        this.favoritos = favoritos;
    }
    
    
    
    @Override
    public int hashCode() {
        int hash = 0;
        hash += (nombre != null ? nombre.hashCode() : 0);
        return hash;
    }

    public String getActualizaCatalogo() {
        return actualizaCatalogo;
    }

    public void setActualizaCatalogo(String actualizaCatalogo) {
        this.actualizaCatalogo = actualizaCatalogo;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Usuario)) {
            return false;
        }
        Usuario other = (Usuario) object;
        if ((this.nombre == null && other.nombre != null) || (this.nombre != null && !this.nombre.equals(other.nombre))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "tv.seguridad.modelo.Usuario[id=" + nombre + "]";
    }

}
